Rows: 88951 Columns: 5── Column specification ────────────────────────────
Delimiter: "\t"
chr (2): region, chr
dbl (3): midPos, Nsites, Fst
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.



This next set of figures were made using ANGSD Allele Frequency
estimation. This was run with a known major and unknown minor, in which
the unknown minor allele frequency is plotted on the y-axis. The major
allele is assumed to be known (inferred or given by user) however the
minor allele is not determined. Instead it is summed over the 3 possible
minor alleles weighted by their probabilities. The allele frequency
estimator from genotype likelihoods was done using the EM algorithm.
Targeting chromosome 3, and further the specific region around
24,700,000 bp, was chosen based on the pairwise Fst sliding window plot
above, where we see a spike at chromosome 3 in that particular region
interesting in that previous studies found an average Fst of 0.008 when
comparing Canadian to Southern New England or Mid-Atlantic samples,
making the Fst values in this region magnitudes larger than expected.
The last time the lab (Anthony) saw a peak such as this, it was the
greb1l gene. All ANGSD runs also were referenced to the American shad
genome.

The following figure is constrained on chromosome 3 to region
24,704,000-24,750,000.

The following figure shows the allele frequencies on a broader range
on chromosome 3 from 24,650,000-24,780,000 with a minimum minor allele
frequency of 0.05.

The following figure is similar to the previous, but contains all
minor allele frequencies.

GRL:
The following two figures are the minor allele frequencies from only
the Great Lakes and Finger Lakes samples, with the first being
unfiltered for minimum allele frequency and the second having a minMaf
of 0.05.


SANAD:
The following two figures are the minor allele frequencies from only
the South Atlantic Gulf and Mid-Atlantic samples, with the first being
unfiltered for minimum allele frequency and the second having a minMaf
of 0.05.


NANAD:
The following two figures are the minor allele frequencies from only
the Canadian and Northern New England samples, with the first being
unfiltered for minimum allele frequency and the second having a minMaf
of 0.05.


Screen grab from UCSC genome browser of American
shad reference genome at our region of interest as found in the pairwise
Fst plot.
Rows: 38 Columns: 4── Column specification ────────────────────────────
Delimiter: "\t"
chr (4): Gene, Official Full Name, Gene Type, Su...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
| Genes Within The Region of Interest |
| chr3:24,660,000-24,750,000 |
|
Official Full Name |
Gene Type |
Summary |
| pvalb4 |
parvalbumin 4 |
protein coding |
predicted to enable calcium ion binding activity |
|
|
|
predicted to be activate in cytoplasm and nucleus |
|
|
|
is expressed in musculature system; myotome; and pectoral fin muscle |
| pvalb8 |
parvalbumin 8 |
protein coding |
predicted to enable calcium ion binding activity |
|
|
|
predicted to be active in cytoplasm and nucleus |
|
|
|
is expressed in several structures, including adenohypophyseal placode; epidermal cell; hypophysis; integument; and sensory system |
|
|
|
othologous to several human genes including OCM2 |
| lmtk2 |
lemur tyrosine kinase 2 |
protein coding |
predicted to enable ATP binding activity and protein kinase activity |
|
|
|
predicted to be involved in axogenesis; positive regulation of kinase activity; and transmembrane receptor protein tyrosine kinase signaling pathway |
|
|
|
predicted to act upstream of or within protein phosphorylation |
|
|
|
predicted to be part of receptor complex |
|
|
|
predicted to be integral component of plasma membrane |
|
|
|
orthologous to human LMTK2 |
| aimp2 |
aminoacyl tRNA synthetase complex interacting multifunctional protein 2 |
protein coding |
predicted to be involved in positive regulation of aminoacyl-tRNA ligase activity |
|
|
|
predicted to act upstream of or within apoptotic process and cell differentiation |
|
|
|
predicted to be located in cytodol and nucleus |
|
|
|
predicted to be part of aminoacyl-tRNA synthetase multienzyme complex |
|
|
|
is expressed in several structures, including alar plate midbrain region; head; immature eye; midbrain; and musculature system |
|
|
|
human ortholog of this gene implicated in hypomyelinating leukodystrophy, a group of neurodevelopmental disorders that affect proper formation of the myelin sheath in the central nervous system |
| myl7 |
myosin, light chain 7, regulatory |
protein coding |
predicted to enable calcium ion binding activity |
|
|
|
acts upstream of or within several processes, including cardiac muscle cell proliferationl heart contraction; and myofibril assembly |
|
|
|
is expressed in several structures, including corpsucles of Stannis; heart primordium; mesoderm; muscle; and pericardial region |
|
|
|
orthologous to human MYL7 |
| cacng4b |
calcium channel, voltage-dependent, gamma subunit 4b |
protein coding |
predicted to enable channel regulator activity and voltage-gated calcium channel activity |
|
|
|
predicted to be involved in serveal processes, including neurotransmitter receptor internalization; neurotransmitter receptor transport, postsynaptic endosome to lysosome; and postsynaptic neurotransmitter receptor diffusion trapping |
|
|
|
predicted to act upstream of or within calcium ion transmembrane transport and regulation of ion transmembrane transport |
|
|
|
predicted to be located in membrane |
|
|
|
predicted to be integral component of membrane |
|
|
|
predicted to be part of AMPA glutamate receptor complex |
|
|
|
predicted to be active in postsynaptic density membrane |
|
|
|
orthologous to human CACNG4 |
| cacng1b |
calcium channel, voltage-dependent, gamma subunit 1b |
protein coding |
predicted to enable calcium channel regulator activity |
|
|
|
predicted to be involved in regulation of calcium ion transmembrane transport via high voltage-gated calcium channel |
|
|
|
predicted to act upstream of or within calcium ion transmembrane transport and regulation of ion transmembrane transport |
|
|
|
predicted to be located in plasma membrane |
|
|
|
predicted to be integral component of membrane |
|
|
|
predicted to be part of L-type voltage-gated calcium channel complex |
|
|
|
human ortholog(s) of this gene implicated in malignant hyperthermia, a severe reaction to certain drugs used for anesthesia with fast rise in body temperature, rigid muscles or spasms, and rapid heart rate |
| References |
| pvalb4: https://www.ncbi.nlm.nih.gov/gene/?term=Danio+rerio+pvalb4 |
| pvalb8: https://www.ncbi.nlm.nih.gov/gene/?term=Danio+rerio+pvalb8 |
| lmtk2: https://www.ncbi.nlm.nih.gov/gene/564666/ |
| aimp2: https://www.ncbi.nlm.nih.gov/gene/406647 |
| myl7: https://www.ncbi.nlm.nih.gov/gene/30592/ |
| cacng4b: https://www.ncbi.nlm.nih.gov/gene/794222/ |
| cacng1b: https://www.ncbi.nlm.nih.gov/gene/571193 |
LS0tCnRpdGxlOiAiQWxsZWxlIEZyZXF1ZW5jaWVzIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7ciBsaWJyYXJpZXMsIGVjaG8gPSBGQUxTRX0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoZ3QpCmxpYnJhcnkoZ2d0ZXh0KQpgYGAKCmBgYHtyIHNhbmFkeG5hbmFkLCBlY2hvID0gRkFMU0V9CmNvbHMgPC0gYygicmVnaW9uIiwgImNociIsICJtaWRQb3MiLCAiTnNpdGVzIiwgIkZzdCIpCmRhdGEgPC0gcmVhZF9kZWxpbSgiZGF0YS9TQU5BRC0teC0tTkFOQUQtLXNpemUtNTAwMDAtLXN0ZXAtMTAwMDAudHN2IiwgCiAgICAgICAgICAgICAgICAgICBza2lwID0gMiwKICAgICAgICAgICAgICAgICAgIGRlbGltID0gIlx0IiwKICAgICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IGNvbHMpCgoKCmRhdGFfY3VtIDwtIGRhdGEgJT4lCiAgZ3JvdXBfYnkoY2hyKSAlPiUKICBzdW1tYXJpc2UobWF4X3BvcyA9IG1heChtaWRQb3MpKSAlPiUKICBtdXRhdGUocG9zX2FkZCA9IGxhZyhjdW1zdW0obWF4X3BvcyksIGRlZmF1bHQgPSAwKSkgJT4lCiAgc2VsZWN0KGNociwgcG9zX2FkZCkKCmRhdGEgPC0gZGF0YSAlPiUKICBpbm5lcl9qb2luKGRhdGFfY3VtLCBieSA9ICJjaHIiKSAlPiUKICBtdXRhdGUocG9zX2N1bSA9IG1pZFBvcyArIHBvc19hZGQpCgpheGlzX3NldCA8LSBkYXRhICU+JQogIGdyb3VwX2J5KGNocikgJT4lCiAgc3VtbWFyaXNlKGNlbnRlciA9IG1lYW4ocG9zX2N1bSkpCgoKcGxvdCA8LSBnZ3Bsb3QoZGF0YSA9IGRhdGEsCiAgICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IHBvc19jdW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IEZzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGFzX2ZhY3RvcihjaHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBGc3QpKSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNzUpICsKICBzY2FsZV94X2NvbnRpbnVvdXMobGFiZWwgPSBheGlzX3NldCRjaHIsCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IGF4aXNfc2V0JGNlbnRlcikgKwogIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsMCksCiAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoLTAuMDUsIDEpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IHJlcChjKCIjMjQyYjM1IiwgIiM4NjljYTgiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZShsZW5ndGgoYXhpc19zZXQkY2hyKSkpKSArCiAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlID0gYygwLjUsIDMpKSArCiAgbGFicyh4ID0gTlVMTCwKICAgICAgIHkgPSAiRnN0IiwKICAgICAgIHRpdGxlID0gIlNvdXRoZXJuIEFuYWRyb21vdXMgdmVyc3VzIE5vcnRoZXJuIEFuYWRyb21vdXMgU2FtcGxlcyIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vci54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfbWFya2Rvd24oKSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2anVzdCA9IDAuNSkpCnBsb3QKCgoKY2hyb20zIDwtIGZpbHRlcihkYXRhLCBjaHIgPT0gIk5DXzA1NTk1OS4xIikKCmNocjNfcGxvdCA8LSBnZ3Bsb3QoZGF0YSA9IGNocm9tMywKICAgICAgICAgICAgICAgICAgICBtYXBwaW5nID0gYWVzKHggPSBwb3NfY3VtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IEZzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSBGc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9ICIjMjQyYjM1IikpICsKICBnZW9tX3BvaW50KGFscGhhID0gMC43NSkgKwogIHNjYWxlX3NpemVfY29udGludW91cyhyYW5nZSA9IGMoMC41LCAzKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSAiIzI0MmIzNSIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoZXhwYW5kID0gYygwLDApLCBsaW1pdHMgPSBjKC0wLjA1LCAxKSkgKwogIGxhYnMoeCA9ICJQb3NpdGlvbiIsIAogICAgICAgeSA9ICJGc3QiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIsCiAgICAgICAgcGFuZWwuZ3JpZC5tYWpvci54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIHBhbmVsLmdyaWQubWlub3IueCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X21hcmtkb3duKCksCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA2MCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDgsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZqdXN0ID0gMC41KSkKY2hyM19wbG90CgoKc3Bpa2UgPC0gZmlsdGVyKGNocm9tMywgRnN0ID4gMC4xNSkKc3Bpa2VfcGxvdCA8LSBnZ3Bsb3QoZGF0YSA9IHNwaWtlLAogICAgICAgICAgICAgICAgICAgIG1hcHBpbmcgPSBhZXMoeCA9IHBvc19jdW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gRnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IEZzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gIiMyNDJiMzUiKSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjc1KSArCiAgc2NhbGVfc2l6ZV9jb250aW51b3VzKHJhbmdlID0gYygwLjUsIDMpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9ICIjMjQyYjM1IikgKwogIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsMCksIGxpbWl0cyA9IGMoLTAuMDUsIDEpKSArCiAgbGFicyh4ID0gIlBvc2l0aW9uIiwgCiAgICAgICB5ID0gIkZzdCIpICsKICB0aGVtZV9taW5pbWFsKCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIiwKICAgICAgICBwYW5lbC5ncmlkLm1ham9yLnggPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vci54ID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfbWFya2Rvd24oKSwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDYwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gOCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmp1c3QgPSAwLjUpKQpzcGlrZV9wbG90CmBgYAoKVGhpcyBuZXh0IHNldCBvZiBmaWd1cmVzIHdlcmUgbWFkZSB1c2luZyBBTkdTRCBBbGxlbGUgRnJlcXVlbmN5IGVzdGltYXRpb24uIFRoaXMgd2FzIHJ1biB3aXRoIGEga25vd24gbWFqb3IgYW5kIHVua25vd24gbWlub3IsIGluIHdoaWNoIHRoZSB1bmtub3duIG1pbm9yIGFsbGVsZSBmcmVxdWVuY3kgaXMgcGxvdHRlZCBvbiB0aGUgeS1heGlzLiBUaGUgbWFqb3IgYWxsZWxlIGlzIGFzc3VtZWQgdG8gYmUga25vd24gKGluZmVycmVkIG9yIGdpdmVuIGJ5IHVzZXIpIGhvd2V2ZXIgdGhlIG1pbm9yIGFsbGVsZSBpcyBub3QgZGV0ZXJtaW5lZC4gSW5zdGVhZCBpdCBpcyBzdW1tZWQgb3ZlciB0aGUgMyBwb3NzaWJsZSBtaW5vciBhbGxlbGVzIHdlaWdodGVkIGJ5IHRoZWlyIHByb2JhYmlsaXRpZXMuIFRoZSBhbGxlbGUgZnJlcXVlbmN5IGVzdGltYXRvciBmcm9tIGdlbm90eXBlIGxpa2VsaWhvb2RzIHdhcyBkb25lIHVzaW5nIHRoZSBFTSBhbGdvcml0aG0uIFRhcmdldGluZyBjaHJvbW9zb21lIDMsIGFuZCBmdXJ0aGVyIHRoZSBzcGVjaWZpYyByZWdpb24gYXJvdW5kIDI0LDcwMCwwMDAgYnAsIHdhcyBjaG9zZW4gYmFzZWQgb24gdGhlIHBhaXJ3aXNlIEZzdCBzbGlkaW5nIHdpbmRvdyBwbG90IGFib3ZlLCB3aGVyZSB3ZSBzZWUgYSBzcGlrZSBhdCBjaHJvbW9zb21lIDMgaW4gdGhhdCBwYXJ0aWN1bGFyIHJlZ2lvbiBpbnRlcmVzdGluZyBpbiB0aGF0IHByZXZpb3VzIHN0dWRpZXMgZm91bmQgYW4gYXZlcmFnZSBGc3Qgb2YgMC4wMDggd2hlbiBjb21wYXJpbmcgQ2FuYWRpYW4gdG8gU291dGhlcm4gTmV3IEVuZ2xhbmQgb3IgTWlkLUF0bGFudGljIHNhbXBsZXMsIG1ha2luZyB0aGUgRnN0IHZhbHVlcyBpbiB0aGlzIHJlZ2lvbiBtYWduaXR1ZGVzIGxhcmdlciB0aGFuIGV4cGVjdGVkLiBUaGUgbGFzdCB0aW1lIHRoZSBsYWIgKEFudGhvbnkpIHNhdyBhIHBlYWsgc3VjaCBhcyB0aGlzLCBpdCB3YXMgdGhlIGdyZWIxbCBnZW5lLiBBbGwgQU5HU0QgcnVucyBhbHNvIHdlcmUgcmVmZXJlbmNlZCB0byB0aGUgQW1lcmljYW4gc2hhZCBnZW5vbWUuCgoKYGBge3IsIGVjaG8gPSBGQUxTRX0Kc25wcyA8LSByZWFkLnRhYmxlKCJkYXRhL2FsZXdpZmUtc3Vic2V0LXctcmVmX2NocjMubWFmcyIsIAogICAgICAgICAgICAgICAgICAgc2VwID0gIlx0IiwgCiAgICAgICAgICAgICAgICAgICBoZWFkZXIgPSBUKQoKcHZhbGI4IDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NzA1Nzc5ICYgcG9zaXRpb24gPCAyNDcyMTQ2NCkgJT4lCiAgYWRkX2NvbHVtbihnZW5lID0gInB2YWxiOCIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKcHZhbGI0IDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NzI0OTI0ICYgcG9zaXRpb24gPCAyNDcyNjA1MiklPiUgCiAgYWRkX2NvbHVtbihnZW5lID0gInB2YWxiNCIpICU+JSAKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCmxtdGsyIDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NzM1NjI0ICYgcG9zaXRpb24gPCAyNDc2MDA4OSkgJT4lCiAgYWRkX2NvbHVtbihnZW5lID0gImxtdGsyIikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpteWw3IDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NzMyMjM3ICYgcG9zaXRpb24gPCAyNDczNjE1NSkgJT4lIAogIGFkZF9jb2x1bW4oZ2VuZSA9ICJteWw3IikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQphaW1wMiA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDY5MDIyOCAmIHBvc2l0aW9uIDwgMjQ2OTQwMjgpICU+JSAKICBhZGRfY29sdW1uKGdlbmUgPSAiYWltcDIiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCmNhY25nNGIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ2NzM0MTggJiBwb3NpdGlvbiA8IDI0NjgzOTc3KSAlPiUKICBhZGRfY29sdW1uKGdlbmUgPSAiY2Fjbmc0YiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKY2FjbmcxYiA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDY1NDQwMCAmIHBvc2l0aW9uIDwgMjQ2NjI2NjYpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJjYWNuZzFiIikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQoKZ2VuZXMgPC0gYmluZF9yb3dzKHB2YWxiNCwgcHZhbGI4LCBsbXRrMiwgbXlsNywgYWltcDIsIGNhY25nMWIsIGNhY25nNGIpCgpzbnBzIDwtIGxlZnRfam9pbihzbnBzLCBnZW5lcywKICAgICAgICAgIGJ5ID0gYygicG9zaXRpb24iID0gInBvc2l0aW9uIikpCgpnZW5lX2NvbG9yIDwtIGMoYGFpbXAyYCA9ICIjMTcyNjNiIiwKICAgICAgICAgICAgICAgIGBjYWNuZzFiYCA9ICIjODY3MDk1IiwKICAgICAgICAgICAgICAgIGBjYWNuZzRiYCA9ICIjNTM2YTViIiwKICAgICAgICAgICAgICAgIGBsbXRrMmAgPSAiI2Y1ZDJmMSIsCiAgICAgICAgICAgICAgICBgbXlsN2AgPSAiIzUwNGE1ZCIsCiAgICAgICAgICAgICAgICBgcHZhbGI0YCA9ICIjZWZmZWZmIiwKICAgICAgICAgICAgICAgIGBwdmFsYjhgID0gIiNhYWQxZjMiKQoKZ2dwbG90KGRhdGEgPSBzbnBzLCAKICAgICAgIG1hcHBpbmcgPSBhZXMoeSA9IHVua25vd25FTSwKICAgICAgICAgICAgICAgICAgICAgeCA9IHBvc2l0aW9uLCAKICAgICAgICAgICAgICAgICAgICAgZmlsbCA9IGdlbmUpKSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNSwgCiAgICAgICAgICAgICBzaGFwZSA9IDIxLCAKICAgICAgICAgICAgIHNpemUgPSAxLjUpICsKICB0aGVtZV9idygpICsKICB0aGVtZShwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSArCiAgZ2VvbV9wb2ludChzaXplID0gMiwKICAgICAgICAgICAgIHN0cm9rZSA9IDAuMDUsCiAgICAgICAgICAgICBhbHBoYSA9IDAuNzUsIAogICAgICAgICAgICAgc2hhcGUgPSAyMSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGdlbmVfY29sb3IpCmBgYAoKClRoZSBmb2xsb3dpbmcgZmlndXJlIGlzIGNvbnN0cmFpbmVkIG9uIGNocm9tb3NvbWUgMyB0byByZWdpb24gMjQsNzA0LDAwMC0yNCw3NTAsMDAwLgoKYGBge3IgZWNobyA9IEZBTFNFfQpzbnBzIDwtIHJlYWQudGFibGUoImRhdGEvYWxld2lmZS1zdWJzZXQtdy1yZWZfMjQ3LTI0N19yZWdpb24ubWFmcyIsIAogICAgICAgICAgICAgICAgICAgc2VwID0gIlx0IiwgCiAgICAgICAgICAgICAgICAgICBoZWFkZXIgPSBUKQoKcHZhbGI4IDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NzA1Nzc5ICYgcG9zaXRpb24gPCAyNDcyMTQ2NCkgJT4lCiAgYWRkX2NvbHVtbihnZW5lID0gInB2YWxiOCIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKcHZhbGI0IDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NzI0OTI0ICYgcG9zaXRpb24gPCAyNDcyNjA1MiklPiUgCiAgYWRkX2NvbHVtbihnZW5lID0gInB2YWxiNCIpICU+JSAKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCmxtdGsyIDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NzM1NjI0ICYgcG9zaXRpb24gPCAyNDc2MDA4OSkgJT4lCiAgYWRkX2NvbHVtbihnZW5lID0gImxtdGsyIikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpteWw3IDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NzMyMjM3ICYgcG9zaXRpb24gPCAyNDczNjE1NSkgJT4lIAogIGFkZF9jb2x1bW4oZ2VuZSA9ICJteWw3IikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQphaW1wMiA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDY5MDIyOCAmIHBvc2l0aW9uIDwgMjQ2OTQwMjgpICU+JSAKICBhZGRfY29sdW1uKGdlbmUgPSAiYWltcDIiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCmNhY25nNGIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ2NzM0MTggJiBwb3NpdGlvbiA8IDI0NjgzOTc3KSAlPiUKICBhZGRfY29sdW1uKGdlbmUgPSAiY2Fjbmc0YiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKY2FjbmcxYiA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDY1NDQwMCAmIHBvc2l0aW9uIDwgMjQ2NjI2NjYpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJjYWNuZzFiIikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQoKZ2VuZXMgPC0gYmluZF9yb3dzKHB2YWxiNCwgcHZhbGI4LCBsbXRrMiwgbXlsNywgYWltcDIsIGNhY25nMWIsIGNhY25nNGIpCgpzbnBzIDwtIGxlZnRfam9pbihzbnBzLCBnZW5lcywKICAgICAgICAgIGJ5ID0gYygicG9zaXRpb24iID0gInBvc2l0aW9uIikpCgpnZW5lX2NvbG9yIDwtIGMoYGFpbXAyYCA9ICIjMTcyNjNiIiwKICAgICAgICAgICAgICAgIGBjYWNuZzFiYCA9ICIjODY3MDk1IiwKICAgICAgICAgICAgICAgIGBjYWNuZzRiYCA9ICIjNTM2YTViIiwKICAgICAgICAgICAgICAgIGBsbXRrMmAgPSAiI2Y1ZDJmMSIsCiAgICAgICAgICAgICAgICBgbXlsN2AgPSAiIzUwNGE1ZCIsCiAgICAgICAgICAgICAgICBgcHZhbGI0YCA9ICIjZWZmZWZmIiwKICAgICAgICAgICAgICAgIGBwdmFsYjhgID0gIiNhYWQxZjMiKQoKZ2dwbG90KGRhdGEgPSBzbnBzLCAKICAgICAgIG1hcHBpbmcgPSBhZXMoeSA9IHVua25vd25FTSwKICAgICAgICAgICAgICAgICAgICAgeCA9IHBvc2l0aW9uLCAKICAgICAgICAgICAgICAgICAgICAgZmlsbCA9IGdlbmUpKSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNSwgCiAgICAgICAgICAgICBzaGFwZSA9IDIxLCAKICAgICAgICAgICAgIHNpemUgPSAxLjUpICsKICB0aGVtZV9idygpICsKICB0aGVtZShwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSArCiAgZ2VvbV9wb2ludChzaXplID0gMiwKICAgICAgICAgICAgIHN0cm9rZSA9IDAuMDUsCiAgICAgICAgICAgICBhbHBoYSA9IDAuNzUsIAogICAgICAgICAgICAgc2hhcGUgPSAyMSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGdlbmVfY29sb3IpCmBgYAoKVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgdGhlIGFsbGVsZSBmcmVxdWVuY2llcyBvbiBhIGJyb2FkZXIgcmFuZ2Ugb24gY2hyb21vc29tZSAzIGZyb20gMjQsNjUwLDAwMC0yNCw3ODAsMDAwIHdpdGggYSBtaW5pbXVtIG1pbm9yIGFsbGVsZSBmcmVxdWVuY3kgb2YgMC4wNS4KCmBgYHtyIGVjaG8gPSBGQUxTRX0Kc25wcyA8LSByZWFkLnRhYmxlKCJkYXRhL2FsZXdpZmUtc3Vic2V0LXctcmVmX3NwZWMtZ2VuZXMubWFmcyIsIAogICAgICAgICAgICAgICAgICAgc2VwID0gIlx0IiwgCiAgICAgICAgICAgICAgICAgICBoZWFkZXIgPSBUKQoKCnB2YWxiOCA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDcwNTc3OSAmIHBvc2l0aW9uIDwgMjQ3MjE0NjQpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJwdmFsYjgiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCnB2YWxiNCA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDcyNDkyNCAmIHBvc2l0aW9uIDwgMjQ3MjYwNTIpJT4lIAogIGFkZF9jb2x1bW4oZ2VuZSA9ICJwdmFsYjQiKSAlPiUgCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpsbXRrMiA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDczNTYyNCAmIHBvc2l0aW9uIDwgMjQ3NjAwODkpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJsbXRrMiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKbXlsNyA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDczMjIzNyAmIHBvc2l0aW9uIDwgMjQ3MzYxNTUpICU+JSAKICBhZGRfY29sdW1uKGdlbmUgPSAibXlsNyIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKYWltcDIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ2OTAyMjggJiBwb3NpdGlvbiA8IDI0Njk0MDI4KSAlPiUgCiAgYWRkX2NvbHVtbihnZW5lID0gImFpbXAyIikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpjYWNuZzRiIDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NjczNDE4ICYgcG9zaXRpb24gPCAyNDY4Mzk3NykgJT4lCiAgYWRkX2NvbHVtbihnZW5lID0gImNhY25nNGIiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCmNhY25nMWIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ2NTQ0MDAgJiBwb3NpdGlvbiA8IDI0NjYyNjY2KSAlPiUKICBhZGRfY29sdW1uKGdlbmUgPSAiY2FjbmcxYiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKCmdlbmVzIDwtIGJpbmRfcm93cyhwdmFsYjQsIHB2YWxiOCwgbG10azIsIG15bDcsIGFpbXAyLCBjYWNuZzFiLCBjYWNuZzRiKQoKc25wcyA8LSBsZWZ0X2pvaW4oc25wcywgZ2VuZXMsCiAgICAgICAgICBieSA9IGMoInBvc2l0aW9uIiA9ICJwb3NpdGlvbiIpKQoKZ2VuZV9jb2xvciA8LSBjKGBhaW1wMmAgPSAiIzE3MjYzYiIsCiAgICAgICAgICAgICAgICBgY2FjbmcxYmAgPSAiIzg2NzA5NSIsCiAgICAgICAgICAgICAgICBgY2Fjbmc0YmAgPSAiIzUzNmE1YiIsCiAgICAgICAgICAgICAgICBgbG10azJgID0gIiNmNWQyZjEiLAogICAgICAgICAgICAgICAgYG15bDdgID0gIiM1MDRhNWQiLAogICAgICAgICAgICAgICAgYHB2YWxiNGAgPSAiI2VmZmVmZiIsCiAgICAgICAgICAgICAgICBgcHZhbGI4YCA9ICIjYWFkMWYzIikKCmdncGxvdChkYXRhID0gc25wcywgCiAgICAgICBtYXBwaW5nID0gYWVzKHkgPSB1bmtub3duRU0sCiAgICAgICAgICAgICAgICAgICAgIHggPSBwb3NpdGlvbiwgCiAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSBnZW5lKSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjUsIAogICAgICAgICAgICAgc2hhcGUgPSAyMSwgCiAgICAgICAgICAgICBzaXplID0gMS41KSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUocGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIsCiAgICAgICAgICAgICBzdHJva2UgPSAwLjA1LAogICAgICAgICAgICAgYWxwaGEgPSAwLjc1LCAKICAgICAgICAgICAgIHNoYXBlID0gMjEpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBnZW5lX2NvbG9yKQpgYGAKClRoZSBmb2xsb3dpbmcgZmlndXJlIGlzIHNpbWlsYXIgdG8gdGhlIHByZXZpb3VzLCBidXQgY29udGFpbnMgYWxsIG1pbm9yIGFsbGVsZSBmcmVxdWVuY2llcy4KCmBgYHtyIGVjaG8gPSBGQUxTRX0Kc25wcyA8LSByZWFkLnRhYmxlKCJkYXRhL2FsZXdpZmUtc3Vic2V0LXctcmVmX3NwZWMtZ2VuZXMtbm8tZmlsdC5tYWZzIiwgCiAgICAgICAgICAgICAgICAgICBzZXAgPSAiXHQiLCAKICAgICAgICAgICAgICAgICAgIGhlYWRlciA9IFQpCgpwdmFsYjggPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ3MDU3NzkgJiBwb3NpdGlvbiA8IDI0NzIxNDY0KSAlPiUKICBhZGRfY29sdW1uKGdlbmUgPSAicHZhbGI4IikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpwdmFsYjQgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ3MjQ5MjQgJiBwb3NpdGlvbiA8IDI0NzI2MDUyKSU+JSAKICBhZGRfY29sdW1uKGdlbmUgPSAicHZhbGI0IikgJT4lIAogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKbG10azIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ3MzU2MjQgJiBwb3NpdGlvbiA8IDI0NzYwMDg5KSAlPiUKICBhZGRfY29sdW1uKGdlbmUgPSAibG10azIiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCm15bDcgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ3MzIyMzcgJiBwb3NpdGlvbiA8IDI0NzM2MTU1KSAlPiUgCiAgYWRkX2NvbHVtbihnZW5lID0gIm15bDciKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCmFpbXAyIDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NjkwMjI4ICYgcG9zaXRpb24gPCAyNDY5NDAyOCkgJT4lIAogIGFkZF9jb2x1bW4oZ2VuZSA9ICJhaW1wMiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKY2Fjbmc0YiA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDY3MzQxOCAmIHBvc2l0aW9uIDwgMjQ2ODM5NzcpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJjYWNuZzRiIikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpjYWNuZzFiIDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NjU0NDAwICYgcG9zaXRpb24gPCAyNDY2MjY2NikgJT4lCiAgYWRkX2NvbHVtbihnZW5lID0gImNhY25nMWIiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCgpnZW5lcyA8LSBiaW5kX3Jvd3MocHZhbGI0LCBwdmFsYjgsIGxtdGsyLCBteWw3LCBhaW1wMiwgY2FjbmcxYiwgY2Fjbmc0YikKCnNucHMgPC0gbGVmdF9qb2luKHNucHMsIGdlbmVzLAogICAgICAgICAgYnkgPSBjKCJwb3NpdGlvbiIgPSAicG9zaXRpb24iKSkKCmdlbmVfY29sb3IgPC0gYyhgYWltcDJgID0gIiMxNzI2M2IiLAogICAgICAgICAgICAgICAgYGNhY25nMWJgID0gIiM4NjcwOTUiLAogICAgICAgICAgICAgICAgYGNhY25nNGJgID0gIiM1MzZhNWIiLAogICAgICAgICAgICAgICAgYGxtdGsyYCA9ICIjZjVkMmYxIiwKICAgICAgICAgICAgICAgIGBteWw3YCA9ICIjNTA0YTVkIiwKICAgICAgICAgICAgICAgIGBwdmFsYjRgID0gIiNlZmZlZmYiLAogICAgICAgICAgICAgICAgYHB2YWxiOGAgPSAiI2FhZDFmMyIpCgpnZ3Bsb3QoZGF0YSA9IHNucHMsIAogICAgICAgbWFwcGluZyA9IGFlcyh5ID0gdW5rbm93bkVNLAogICAgICAgICAgICAgICAgICAgICB4ID0gcG9zaXRpb24sIAogICAgICAgICAgICAgICAgICAgICBmaWxsID0gZ2VuZSkpICsKICBnZW9tX3BvaW50KGFscGhhID0gMC41LCAKICAgICAgICAgICAgIHNoYXBlID0gMjEsIAogICAgICAgICAgICAgc2l6ZSA9IDEuNSkgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpICsKICBnZW9tX3BvaW50KHNpemUgPSAyLAogICAgICAgICAgICAgc3Ryb2tlID0gMC4wNSwKICAgICAgICAgICAgIGFscGhhID0gMC43NSwgCiAgICAgICAgICAgICBzaGFwZSA9IDIxKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gZ2VuZV9jb2xvcikKYGBgCgpHUkw6CgpUaGUgZm9sbG93aW5nIHR3byBmaWd1cmVzIGFyZSB0aGUgbWlub3IgYWxsZWxlIGZyZXF1ZW5jaWVzIGZyb20gb25seSB0aGUgR3JlYXQgTGFrZXMgYW5kIEZpbmdlciBMYWtlcyBzYW1wbGVzLCB3aXRoIHRoZSBmaXJzdCBiZWluZyB1bmZpbHRlcmVkIGZvciBtaW5pbXVtIGFsbGVsZSBmcmVxdWVuY3kgYW5kIHRoZSBzZWNvbmQgaGF2aW5nIGEgbWluTWFmIG9mIDAuMDUuCgpgYGB7ciBlY2hvID0gRkFMU0V9CnNucHMgPC0gcmVhZC50YWJsZSgiZGF0YS9HUkwtYWxld2lmZS1zdWJzZXQtdy1yZWZfc3BlYy1nZW5lcy1uby1maWx0Lm1hZnMiLCAKICAgICAgICAgICAgICAgICAgIHNlcCA9ICJcdCIsIAogICAgICAgICAgICAgICAgICAgaGVhZGVyID0gVCkKCnB2YWxiOCA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDcwNTc3OSAmIHBvc2l0aW9uIDwgMjQ3MjE0NjQpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJwdmFsYjgiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCnB2YWxiNCA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDcyNDkyNCAmIHBvc2l0aW9uIDwgMjQ3MjYwNTIpJT4lIAogIGFkZF9jb2x1bW4oZ2VuZSA9ICJwdmFsYjQiKSAlPiUgCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpsbXRrMiA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDczNTYyNCAmIHBvc2l0aW9uIDwgMjQ3NjAwODkpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJsbXRrMiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKbXlsNyA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDczMjIzNyAmIHBvc2l0aW9uIDwgMjQ3MzYxNTUpICU+JSAKICBhZGRfY29sdW1uKGdlbmUgPSAibXlsNyIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKYWltcDIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ2OTAyMjggJiBwb3NpdGlvbiA8IDI0Njk0MDI4KSAlPiUgCiAgYWRkX2NvbHVtbihnZW5lID0gImFpbXAyIikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpjYWNuZzRiIDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NjczNDE4ICYgcG9zaXRpb24gPCAyNDY4Mzk3NykgJT4lCiAgYWRkX2NvbHVtbihnZW5lID0gImNhY25nNGIiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCmNhY25nMWIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ2NTQ0MDAgJiBwb3NpdGlvbiA8IDI0NjYyNjY2KSAlPiUKICBhZGRfY29sdW1uKGdlbmUgPSAiY2FjbmcxYiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKCmdlbmVzIDwtIGJpbmRfcm93cyhwdmFsYjQsIHB2YWxiOCwgbG10azIsIG15bDcsIGFpbXAyLCBjYWNuZzFiLCBjYWNuZzRiKQoKc25wcyA8LSBsZWZ0X2pvaW4oc25wcywgZ2VuZXMsCiAgICAgICAgICBieSA9IGMoInBvc2l0aW9uIiA9ICJwb3NpdGlvbiIpKQoKZ2VuZV9jb2xvciA8LSBjKGBhaW1wMmAgPSAiIzE3MjYzYiIsCiAgICAgICAgICAgICAgICBgY2FjbmcxYmAgPSAiIzg2NzA5NSIsCiAgICAgICAgICAgICAgICBgY2Fjbmc0YmAgPSAiIzUzNmE1YiIsCiAgICAgICAgICAgICAgICBgbG10azJgID0gIiNmNWQyZjEiLAogICAgICAgICAgICAgICAgYG15bDdgID0gIiM1MDRhNWQiLAogICAgICAgICAgICAgICAgYHB2YWxiNGAgPSAiI2VmZmVmZiIsCiAgICAgICAgICAgICAgICBgcHZhbGI4YCA9ICIjYWFkMWYzIikKCmdncGxvdChkYXRhID0gc25wcywgCiAgICAgICBtYXBwaW5nID0gYWVzKHkgPSB1bmtub3duRU0sCiAgICAgICAgICAgICAgICAgICAgIHggPSBwb3NpdGlvbiwgCiAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSBnZW5lKSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjUsIAogICAgICAgICAgICAgc2hhcGUgPSAyMSwgCiAgICAgICAgICAgICBzaXplID0gMS41KSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUocGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIsCiAgICAgICAgICAgICBzdHJva2UgPSAwLjA1LAogICAgICAgICAgICAgYWxwaGEgPSAwLjc1LCAKICAgICAgICAgICAgIHNoYXBlID0gMjEpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBnZW5lX2NvbG9yKQoKc25wcyA8LSByZWFkLnRhYmxlKCJkYXRhL0dSTC1hbGV3aWZlLXN1YnNldC13LXJlZl9zcGVjLWdlbmVzLm1hZnMiLCAKICAgICAgICAgICAgICAgICAgIHNlcCA9ICJcdCIsIAogICAgICAgICAgICAgICAgICAgaGVhZGVyID0gVCkKCnB2YWxiOCA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDcwNTc3OSAmIHBvc2l0aW9uIDwgMjQ3MjE0NjQpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJwdmFsYjgiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCnB2YWxiNCA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDcyNDkyNCAmIHBvc2l0aW9uIDwgMjQ3MjYwNTIpJT4lIAogIGFkZF9jb2x1bW4oZ2VuZSA9ICJwdmFsYjQiKSAlPiUgCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpsbXRrMiA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDczNTYyNCAmIHBvc2l0aW9uIDwgMjQ3NjAwODkpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJsbXRrMiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKbXlsNyA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDczMjIzNyAmIHBvc2l0aW9uIDwgMjQ3MzYxNTUpICU+JSAKICBhZGRfY29sdW1uKGdlbmUgPSAibXlsNyIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKYWltcDIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ2OTAyMjggJiBwb3NpdGlvbiA8IDI0Njk0MDI4KSAlPiUgCiAgYWRkX2NvbHVtbihnZW5lID0gImFpbXAyIikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpjYWNuZzRiIDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NjczNDE4ICYgcG9zaXRpb24gPCAyNDY4Mzk3NykgJT4lCiAgYWRkX2NvbHVtbihnZW5lID0gImNhY25nNGIiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCmNhY25nMWIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ2NTQ0MDAgJiBwb3NpdGlvbiA8IDI0NjYyNjY2KSAlPiUKICBhZGRfY29sdW1uKGdlbmUgPSAiY2FjbmcxYiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKCmdlbmVzIDwtIGJpbmRfcm93cyhwdmFsYjQsIHB2YWxiOCwgbG10azIsIG15bDcsIGFpbXAyLCBjYWNuZzFiLCBjYWNuZzRiKQoKc25wcyA8LSBsZWZ0X2pvaW4oc25wcywgZ2VuZXMsCiAgICAgICAgICBieSA9IGMoInBvc2l0aW9uIiA9ICJwb3NpdGlvbiIpKQoKZ2VuZV9jb2xvciA8LSBjKGBhaW1wMmAgPSAiIzE3MjYzYiIsCiAgICAgICAgICAgICAgICBgY2FjbmcxYmAgPSAiIzg2NzA5NSIsCiAgICAgICAgICAgICAgICBgY2Fjbmc0YmAgPSAiIzUzNmE1YiIsCiAgICAgICAgICAgICAgICBgbG10azJgID0gIiNmNWQyZjEiLAogICAgICAgICAgICAgICAgYG15bDdgID0gIiM1MDRhNWQiLAogICAgICAgICAgICAgICAgYHB2YWxiNGAgPSAiI2VmZmVmZiIsCiAgICAgICAgICAgICAgICBgcHZhbGI4YCA9ICIjYWFkMWYzIikKCmdncGxvdChkYXRhID0gc25wcywgCiAgICAgICBtYXBwaW5nID0gYWVzKHkgPSB1bmtub3duRU0sCiAgICAgICAgICAgICAgICAgICAgIHggPSBwb3NpdGlvbiwgCiAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSBnZW5lKSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjUsIAogICAgICAgICAgICAgc2hhcGUgPSAyMSwgCiAgICAgICAgICAgICBzaXplID0gMS41KSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUocGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIsCiAgICAgICAgICAgICBzdHJva2UgPSAwLjA1LAogICAgICAgICAgICAgYWxwaGEgPSAwLjc1LCAKICAgICAgICAgICAgIHNoYXBlID0gMjEpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBnZW5lX2NvbG9yKQpgYGAKCgpTQU5BRDoKClRoZSBmb2xsb3dpbmcgdHdvIGZpZ3VyZXMgYXJlIHRoZSBtaW5vciBhbGxlbGUgZnJlcXVlbmNpZXMgZnJvbSBvbmx5IHRoZSBTb3V0aCBBdGxhbnRpYyBHdWxmIGFuZCBNaWQtQXRsYW50aWMgc2FtcGxlcywgd2l0aCB0aGUgZmlyc3QgYmVpbmcgdW5maWx0ZXJlZCBmb3IgbWluaW11bSBhbGxlbGUgZnJlcXVlbmN5IGFuZCB0aGUgc2Vjb25kIGhhdmluZyBhIG1pbk1hZiBvZiAwLjA1LgoKYGBge3IgZWNobyA9IEZBTFNFfQpzbnBzIDwtIHJlYWQudGFibGUoImRhdGEvU0FOQUQtYWxld2lmZS1zdWJzZXQtdy1yZWZfc3BlYy1nZW5lcy1uby1maWx0Lm1hZnMiLCAKICAgICAgICAgICAgICAgICAgIHNlcCA9ICJcdCIsIAogICAgICAgICAgICAgICAgICAgaGVhZGVyID0gVCkKCnB2YWxiOCA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDcwNTc3OSAmIHBvc2l0aW9uIDwgMjQ3MjE0NjQpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJwdmFsYjgiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCnB2YWxiNCA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDcyNDkyNCAmIHBvc2l0aW9uIDwgMjQ3MjYwNTIpJT4lIAogIGFkZF9jb2x1bW4oZ2VuZSA9ICJwdmFsYjQiKSAlPiUgCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpsbXRrMiA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDczNTYyNCAmIHBvc2l0aW9uIDwgMjQ3NjAwODkpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJsbXRrMiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKbXlsNyA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDczMjIzNyAmIHBvc2l0aW9uIDwgMjQ3MzYxNTUpICU+JSAKICBhZGRfY29sdW1uKGdlbmUgPSAibXlsNyIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKYWltcDIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ2OTAyMjggJiBwb3NpdGlvbiA8IDI0Njk0MDI4KSAlPiUgCiAgYWRkX2NvbHVtbihnZW5lID0gImFpbXAyIikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpjYWNuZzRiIDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NjczNDE4ICYgcG9zaXRpb24gPCAyNDY4Mzk3NykgJT4lCiAgYWRkX2NvbHVtbihnZW5lID0gImNhY25nNGIiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCmNhY25nMWIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ2NTQ0MDAgJiBwb3NpdGlvbiA8IDI0NjYyNjY2KSAlPiUKICBhZGRfY29sdW1uKGdlbmUgPSAiY2FjbmcxYiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKCmdlbmVzIDwtIGJpbmRfcm93cyhwdmFsYjQsIHB2YWxiOCwgbG10azIsIG15bDcsIGFpbXAyLCBjYWNuZzFiLCBjYWNuZzRiKQoKc25wcyA8LSBsZWZ0X2pvaW4oc25wcywgZ2VuZXMsCiAgICAgICAgICBieSA9IGMoInBvc2l0aW9uIiA9ICJwb3NpdGlvbiIpKQoKZ2VuZV9jb2xvciA8LSBjKGBhaW1wMmAgPSAiIzE3MjYzYiIsCiAgICAgICAgICAgICAgICBgY2FjbmcxYmAgPSAiIzg2NzA5NSIsCiAgICAgICAgICAgICAgICBgY2Fjbmc0YmAgPSAiIzUzNmE1YiIsCiAgICAgICAgICAgICAgICBgbG10azJgID0gIiNmNWQyZjEiLAogICAgICAgICAgICAgICAgYG15bDdgID0gIiM1MDRhNWQiLAogICAgICAgICAgICAgICAgYHB2YWxiNGAgPSAiI2VmZmVmZiIsCiAgICAgICAgICAgICAgICBgcHZhbGI4YCA9ICIjYWFkMWYzIikKCmdncGxvdChkYXRhID0gc25wcywgCiAgICAgICBtYXBwaW5nID0gYWVzKHkgPSB1bmtub3duRU0sCiAgICAgICAgICAgICAgICAgICAgIHggPSBwb3NpdGlvbiwgCiAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSBnZW5lKSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjUsIAogICAgICAgICAgICAgc2hhcGUgPSAyMSwgCiAgICAgICAgICAgICBzaXplID0gMS41KSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUocGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIsCiAgICAgICAgICAgICBzdHJva2UgPSAwLjA1LAogICAgICAgICAgICAgYWxwaGEgPSAwLjc1LCAKICAgICAgICAgICAgIHNoYXBlID0gMjEpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBnZW5lX2NvbG9yKQoKc25wcyA8LSByZWFkLnRhYmxlKCJkYXRhL1NBTkFELWFsZXdpZmUtc3Vic2V0LXctcmVmX3NwZWMtZ2VuZXMubWFmcyIsIAogICAgICAgICAgICAgICAgICAgc2VwID0gIlx0IiwgCiAgICAgICAgICAgICAgICAgICBoZWFkZXIgPSBUKQoKcHZhbGI4IDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NzA1Nzc5ICYgcG9zaXRpb24gPCAyNDcyMTQ2NCkgJT4lCiAgYWRkX2NvbHVtbihnZW5lID0gInB2YWxiOCIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKcHZhbGI0IDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NzI0OTI0ICYgcG9zaXRpb24gPCAyNDcyNjA1MiklPiUgCiAgYWRkX2NvbHVtbihnZW5lID0gInB2YWxiNCIpICU+JSAKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCmxtdGsyIDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NzM1NjI0ICYgcG9zaXRpb24gPCAyNDc2MDA4OSkgJT4lCiAgYWRkX2NvbHVtbihnZW5lID0gImxtdGsyIikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpteWw3IDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NzMyMjM3ICYgcG9zaXRpb24gPCAyNDczNjE1NSkgJT4lIAogIGFkZF9jb2x1bW4oZ2VuZSA9ICJteWw3IikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQphaW1wMiA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDY5MDIyOCAmIHBvc2l0aW9uIDwgMjQ2OTQwMjgpICU+JSAKICBhZGRfY29sdW1uKGdlbmUgPSAiYWltcDIiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCmNhY25nNGIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ2NzM0MTggJiBwb3NpdGlvbiA8IDI0NjgzOTc3KSAlPiUKICBhZGRfY29sdW1uKGdlbmUgPSAiY2Fjbmc0YiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKY2FjbmcxYiA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDY1NDQwMCAmIHBvc2l0aW9uIDwgMjQ2NjI2NjYpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJjYWNuZzFiIikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQoKZ2VuZXMgPC0gYmluZF9yb3dzKHB2YWxiNCwgcHZhbGI4LCBsbXRrMiwgbXlsNywgYWltcDIsIGNhY25nMWIsIGNhY25nNGIpCgpzbnBzIDwtIGxlZnRfam9pbihzbnBzLCBnZW5lcywKICAgICAgICAgIGJ5ID0gYygicG9zaXRpb24iID0gInBvc2l0aW9uIikpCgpnZW5lX2NvbG9yIDwtIGMoYGFpbXAyYCA9ICIjMTcyNjNiIiwKICAgICAgICAgICAgICAgIGBjYWNuZzFiYCA9ICIjODY3MDk1IiwKICAgICAgICAgICAgICAgIGBjYWNuZzRiYCA9ICIjNTM2YTViIiwKICAgICAgICAgICAgICAgIGBsbXRrMmAgPSAiI2Y1ZDJmMSIsCiAgICAgICAgICAgICAgICBgbXlsN2AgPSAiIzUwNGE1ZCIsCiAgICAgICAgICAgICAgICBgcHZhbGI0YCA9ICIjZWZmZWZmIiwKICAgICAgICAgICAgICAgIGBwdmFsYjhgID0gIiNhYWQxZjMiKQoKZ2dwbG90KGRhdGEgPSBzbnBzLCAKICAgICAgIG1hcHBpbmcgPSBhZXMoeSA9IHVua25vd25FTSwKICAgICAgICAgICAgICAgICAgICAgeCA9IHBvc2l0aW9uLCAKICAgICAgICAgICAgICAgICAgICAgZmlsbCA9IGdlbmUpKSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNSwgCiAgICAgICAgICAgICBzaGFwZSA9IDIxLCAKICAgICAgICAgICAgIHNpemUgPSAxLjUpICsKICB0aGVtZV9idygpICsKICB0aGVtZShwYW5lbC5ncmlkLm1pbm9yID0gZWxlbWVudF9ibGFuaygpKSArCiAgZ2VvbV9wb2ludChzaXplID0gMiwKICAgICAgICAgICAgIHN0cm9rZSA9IDAuMDUsCiAgICAgICAgICAgICBhbHBoYSA9IDAuNzUsIAogICAgICAgICAgICAgc2hhcGUgPSAyMSkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGdlbmVfY29sb3IpCmBgYAoKTkFOQUQ6CgpUaGUgZm9sbG93aW5nIHR3byBmaWd1cmVzIGFyZSB0aGUgbWlub3IgYWxsZWxlIGZyZXF1ZW5jaWVzIGZyb20gb25seSB0aGUgQ2FuYWRpYW4gYW5kIE5vcnRoZXJuIE5ldyBFbmdsYW5kIHNhbXBsZXMsIHdpdGggdGhlIGZpcnN0IGJlaW5nIHVuZmlsdGVyZWQgZm9yIG1pbmltdW0gYWxsZWxlIGZyZXF1ZW5jeSBhbmQgdGhlIHNlY29uZCBoYXZpbmcgYSBtaW5NYWYgb2YgMC4wNS4KCmBgYHtyIGVjaG8gPSBGQUxTRX0Kc25wcyA8LSByZWFkLnRhYmxlKCJkYXRhL05BTkFELWFsZXdpZmUtc3Vic2V0LXctcmVmX3NwZWMtZ2VuZXMtbm8tZmlsdC5tYWZzIiwgCiAgICAgICAgICAgICAgICAgICBzZXAgPSAiXHQiLCAKICAgICAgICAgICAgICAgICAgIGhlYWRlciA9IFQpCgpwdmFsYjggPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ3MDU3NzkgJiBwb3NpdGlvbiA8IDI0NzIxNDY0KSAlPiUKICBhZGRfY29sdW1uKGdlbmUgPSAicHZhbGI4IikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpwdmFsYjQgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ3MjQ5MjQgJiBwb3NpdGlvbiA8IDI0NzI2MDUyKSU+JSAKICBhZGRfY29sdW1uKGdlbmUgPSAicHZhbGI0IikgJT4lIAogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKbG10azIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ3MzU2MjQgJiBwb3NpdGlvbiA8IDI0NzYwMDg5KSAlPiUKICBhZGRfY29sdW1uKGdlbmUgPSAibG10azIiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCm15bDcgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ3MzIyMzcgJiBwb3NpdGlvbiA8IDI0NzM2MTU1KSAlPiUgCiAgYWRkX2NvbHVtbihnZW5lID0gIm15bDciKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCmFpbXAyIDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NjkwMjI4ICYgcG9zaXRpb24gPCAyNDY5NDAyOCkgJT4lIAogIGFkZF9jb2x1bW4oZ2VuZSA9ICJhaW1wMiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKY2Fjbmc0YiA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDY3MzQxOCAmIHBvc2l0aW9uIDwgMjQ2ODM5NzcpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJjYWNuZzRiIikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpjYWNuZzFiIDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NjU0NDAwICYgcG9zaXRpb24gPCAyNDY2MjY2NikgJT4lCiAgYWRkX2NvbHVtbihnZW5lID0gImNhY25nMWIiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCgpnZW5lcyA8LSBiaW5kX3Jvd3MocHZhbGI0LCBwdmFsYjgsIGxtdGsyLCBteWw3LCBhaW1wMiwgY2FjbmcxYiwgY2Fjbmc0YikKCnNucHMgPC0gbGVmdF9qb2luKHNucHMsIGdlbmVzLAogICAgICAgICAgYnkgPSBjKCJwb3NpdGlvbiIgPSAicG9zaXRpb24iKSkKCmdlbmVfY29sb3IgPC0gYyhgYWltcDJgID0gIiMxNzI2M2IiLAogICAgICAgICAgICAgICAgYGNhY25nMWJgID0gIiM4NjcwOTUiLAogICAgICAgICAgICAgICAgYGNhY25nNGJgID0gIiM1MzZhNWIiLAogICAgICAgICAgICAgICAgYGxtdGsyYCA9ICIjZjVkMmYxIiwKICAgICAgICAgICAgICAgIGBteWw3YCA9ICIjNTA0YTVkIiwKICAgICAgICAgICAgICAgIGBwdmFsYjRgID0gIiNlZmZlZmYiLAogICAgICAgICAgICAgICAgYHB2YWxiOGAgPSAiI2FhZDFmMyIpCgpnZ3Bsb3QoZGF0YSA9IHNucHMsIAogICAgICAgbWFwcGluZyA9IGFlcyh5ID0gdW5rbm93bkVNLAogICAgICAgICAgICAgICAgICAgICB4ID0gcG9zaXRpb24sIAogICAgICAgICAgICAgICAgICAgICBmaWxsID0gZ2VuZSkpICsKICBnZW9tX3BvaW50KGFscGhhID0gMC41LCAKICAgICAgICAgICAgIHNoYXBlID0gMjEsIAogICAgICAgICAgICAgc2l6ZSA9IDEuNSkgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCkpICsKICBnZW9tX3BvaW50KHNpemUgPSAyLAogICAgICAgICAgICAgc3Ryb2tlID0gMC4wNSwKICAgICAgICAgICAgIGFscGhhID0gMC43NSwgCiAgICAgICAgICAgICBzaGFwZSA9IDIxKSArCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gZ2VuZV9jb2xvcikKCnNucHMgPC0gcmVhZC50YWJsZSgiZGF0YS9OQU5BRC1hbGV3aWZlLXN1YnNldC13LXJlZl9zcGVjLWdlbmVzLm1hZnMiLCAKICAgICAgICAgICAgICAgICAgIHNlcCA9ICJcdCIsIAogICAgICAgICAgICAgICAgICAgaGVhZGVyID0gVCkKCnB2YWxiOCA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDcwNTc3OSAmIHBvc2l0aW9uIDwgMjQ3MjE0NjQpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJwdmFsYjgiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCnB2YWxiNCA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDcyNDkyNCAmIHBvc2l0aW9uIDwgMjQ3MjYwNTIpJT4lIAogIGFkZF9jb2x1bW4oZ2VuZSA9ICJwdmFsYjQiKSAlPiUgCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpsbXRrMiA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDczNTYyNCAmIHBvc2l0aW9uIDwgMjQ3NjAwODkpICU+JQogIGFkZF9jb2x1bW4oZ2VuZSA9ICJsbXRrMiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKbXlsNyA8LSBmaWx0ZXIoc25wcywgcG9zaXRpb24gPiAyNDczMjIzNyAmIHBvc2l0aW9uIDwgMjQ3MzYxNTUpICU+JSAKICBhZGRfY29sdW1uKGdlbmUgPSAibXlsNyIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKYWltcDIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ2OTAyMjggJiBwb3NpdGlvbiA8IDI0Njk0MDI4KSAlPiUgCiAgYWRkX2NvbHVtbihnZW5lID0gImFpbXAyIikgJT4lCiAgc2VsZWN0KHBvc2l0aW9uLCBnZW5lKQpjYWNuZzRiIDwtIGZpbHRlcihzbnBzLCBwb3NpdGlvbiA+IDI0NjczNDE4ICYgcG9zaXRpb24gPCAyNDY4Mzk3NykgJT4lCiAgYWRkX2NvbHVtbihnZW5lID0gImNhY25nNGIiKSAlPiUKICBzZWxlY3QocG9zaXRpb24sIGdlbmUpCmNhY25nMWIgPC0gZmlsdGVyKHNucHMsIHBvc2l0aW9uID4gMjQ2NTQ0MDAgJiBwb3NpdGlvbiA8IDI0NjYyNjY2KSAlPiUKICBhZGRfY29sdW1uKGdlbmUgPSAiY2FjbmcxYiIpICU+JQogIHNlbGVjdChwb3NpdGlvbiwgZ2VuZSkKCmdlbmVzIDwtIGJpbmRfcm93cyhwdmFsYjQsIHB2YWxiOCwgbG10azIsIG15bDcsIGFpbXAyLCBjYWNuZzFiLCBjYWNuZzRiKQoKc25wcyA8LSBsZWZ0X2pvaW4oc25wcywgZ2VuZXMsCiAgICAgICAgICBieSA9IGMoInBvc2l0aW9uIiA9ICJwb3NpdGlvbiIpKQoKZ2VuZV9jb2xvciA8LSBjKGBhaW1wMmAgPSAiIzE3MjYzYiIsCiAgICAgICAgICAgICAgICBgY2FjbmcxYmAgPSAiIzg2NzA5NSIsCiAgICAgICAgICAgICAgICBgY2Fjbmc0YmAgPSAiIzUzNmE1YiIsCiAgICAgICAgICAgICAgICBgbG10azJgID0gIiNmNWQyZjEiLAogICAgICAgICAgICAgICAgYG15bDdgID0gIiM1MDRhNWQiLAogICAgICAgICAgICAgICAgYHB2YWxiNGAgPSAiI2VmZmVmZiIsCiAgICAgICAgICAgICAgICBgcHZhbGI4YCA9ICIjYWFkMWYzIikKCmdncGxvdChkYXRhID0gc25wcywgCiAgICAgICBtYXBwaW5nID0gYWVzKHkgPSB1bmtub3duRU0sCiAgICAgICAgICAgICAgICAgICAgIHggPSBwb3NpdGlvbiwgCiAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSBnZW5lKSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjUsIAogICAgICAgICAgICAgc2hhcGUgPSAyMSwgCiAgICAgICAgICAgICBzaXplID0gMS41KSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUocGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDIsCiAgICAgICAgICAgICBzdHJva2UgPSAwLjA1LAogICAgICAgICAgICAgYWxwaGEgPSAwLjc1LCAKICAgICAgICAgICAgIHNoYXBlID0gMjEpICsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBnZW5lX2NvbG9yKQpgYGAKCiFbU2NyZWVuIGdyYWIgZnJvbSBVQ1NDIGdlbm9tZSBicm93c2VyIG9mIEFtZXJpY2FuIHNoYWQgcmVmZXJlbmNlIGdlbm9tZSBhdCBvdXIgcmVnaW9uIG9mIGludGVyZXN0IGFzIGZvdW5kIGluIHRoZSBwYWlyd2lzZSBGc3QgcGxvdC5dKGNocjMtc3BlYy1yZWdpb24tc2NyZWVuZ3JhYi5wbmcpCgoKYGBge3IsIGVjaG8gPSBGQUxTRX0KZ2VuZV9kZXNjIDwtIHJlYWRfdHN2KCJnZW5lLWRlc2NyaXB0aW9ucy50c3YiKQpndF90YmwgPC0gZ3QoZ2VuZV9kZXNjLAogICAgICAgICAgICAgcm93bmFtZV9jb2wgPSAiR2VuZSIpCmd0X3RibCA8LSBndF90YmwgfD4KICB0YWJfaGVhZGVyKHRpdGxlID0gIkdlbmVzIFdpdGhpbiBUaGUgUmVnaW9uIG9mIEludGVyZXN0IiwKICAgICAgICAgICAgIHN1YnRpdGxlID0gImNocjM6MjQsNjYwLDAwMC0yNCw3NTAsMDAwIikgfD4KICB0YWJfc291cmNlX25vdGUoc291cmNlX25vdGUgPSAiUmVmZXJlbmNlcyIpIHw+CiAgdGFiX3NvdXJjZV9ub3RlKHNvdXJjZV9ub3RlID0gInB2YWxiNDogaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9nZW5lLz90ZXJtPURhbmlvK3JlcmlvK3B2YWxiNCIpIHw+CiAgdGFiX3NvdXJjZV9ub3RlKHNvdXJjZV9ub3RlID0gInB2YWxiODogaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9nZW5lLz90ZXJtPURhbmlvK3JlcmlvK3B2YWxiOCIpIHw+CiAgdGFiX3NvdXJjZV9ub3RlKHNvdXJjZV9ub3RlID0gImxtdGsyOiBodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L2dlbmUvNTY0NjY2LyIpIHw+CiAgdGFiX3NvdXJjZV9ub3RlKHNvdXJjZV9ub3RlID0gImFpbXAyOiBodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L2dlbmUvNDA2NjQ3IikgfD4KICB0YWJfc291cmNlX25vdGUoc291cmNlX25vdGUgPSAibXlsNzogaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9nZW5lLzMwNTkyLyIpIHw+CiAgdGFiX3NvdXJjZV9ub3RlKHNvdXJjZV9ub3RlID0gImNhY25nNGI6IGh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvZ2VuZS83OTQyMjIvIikgfD4KICB0YWJfc291cmNlX25vdGUoc291cmNlX25vdGUgPSAiY2FjbmcxYjogaHR0cHM6Ly93d3cubmNiaS5ubG0ubmloLmdvdi9nZW5lLzU3MTE5MyIpIHw+CiAgc3ViX21pc3NpbmcoY29sdW1ucyA9IGV2ZXJ5dGhpbmcoKSwKICAgICAgICAgICAgICByb3dzID0gZXZlcnl0aGluZygpLAogICAgICAgICAgICAgIG1pc3NpbmdfdGV4dCA9ICIiKSB8PgogIG9wdF9yb3dfc3RyaXBpbmcoKQpndF90YmwKYGBgCg==